/**
 * @class Ext.StoreMgr
 * @extends Ext.util.MixedCollection The default global group of stores.
 * @singleton
 */
Ext.StoreMgr = Ext.apply(new Ext.util.MixedCollection(),
{
	/**
	 * @cfg {Object} listeners
	 * @hide
	 */

	/**
	 * Registers one or more Stores with the StoreMgr. You do not normally need to register stores manually. Any store initialized with a
	 * {@link Ext.data.Store#storeId} will be auto-registered.
	 * 
	 * @param {Ext.data.Store...} stores Any number of Store instances
	 */
	register: function()
	{
		for( var i = 0, s; (s = arguments[i]); i++ )
		{
			this.add(s);
		}
	},

	/**
	 * Unregisters one or more Stores with the StoreMgr
	 * 
	 * @param {String/Object} ids IDs of the Stores, or Store instances
	 */
	unregister: function()
	{
		for( var i = 0, s; (s = arguments[i]); i++ )
		{
			this.remove(this.lookup(s));
		}
	},

	/**
	 * Gets a registered Store by id
	 * 
	 * @param {String/Object} id The id of the Store, or a Store instance
	 * @return {Ext.data.Store}
	 */
	lookup: function( id )
	{
		if( Ext.isArray(id) )
		{
			var fields =
			[
				'field1'
			], expand = !Ext.isArray(id[0]);
			if( !expand )
			{
				for( var i = 2, len = id[0].length; i <= len; ++i )
				{
					fields.push('field' + i);
				}
			}
			return new Ext.data.ArrayStore(
			{
				fields: fields,
				data: id,
				expandData: expand,
				autoDestroy: true,
				autoCreated: true

			});
		}
		return Ext.isObject(id) ? (id.events ? id : Ext.create(id, 'store')) : this.get(id);
	},

	// getKey implementation for MixedCollection
	getKey: function( o )
	{
		return o.storeId;
	}
});